#include<iostream>
using namespace std;

const int N = 1e5 + 10, M = 1e6 + 10;
int h, id, e[N], ne[N];
int mp[M];
int main()
{

    int q;
    cin >> q;

    e[++ id] = 1;
    mp[1] = id;

    while(q --)
    {
        int op, x, y;
        cin >> op >> x;
        // 标记x存的位置
        int p = mp[x];

        if(op == 1)
        {
            cin >> y;
            e[++ id] = y;
            mp[y] = id;
            // 把y插入x后面
            ne[id] = ne[p];
            ne[p] = id;
        }
        else if(op == 2)
        {
            // 查询x后面的元素并输出
            cout << e[ne[p]] << endl;
        }
        else
        {
            // 删除x后面的元素
            ne[p] = ne[ne[p]];
        }
    }
    return 0;
}